{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 皮马印第安人糖尿病数据分类器练习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "#竞赛的评价指标为logloss\n",
    "from sklearn.metrics import log_loss  \n",
    "\n",
    "from sklearn import metrics \n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "\n",
    "params = {'legend.fontsize': 'x-large',\n",
    "          'figure.figsize': (30, 10),\n",
    "          'axes.labelsize': 'x-large',\n",
    "          'axes.titlesize':'x-large',\n",
    "          'xtick.labelsize':'x-large',\n",
    "          'ytick.labelsize':'x-large'}\n",
    "plt.rcParams.update(params)\n",
    "pd.options.display.max_colwidth = 1000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1 读取数据&数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 768 non-null int64\n",
      "Glucose                     768 non-null int64\n",
      "BloodPressure               768 non-null int64\n",
      "SkinThickness               768 non-null int64\n",
      "Insulin                     768 non-null int64\n",
      "BMI                         768 non-null float64\n",
      "DiabetesPedigreeFunction    768 non-null float64\n",
      "Age                         768 non-null int64\n",
      "Outcome                     768 non-null int64\n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.845052</td>\n",
       "      <td>120.894531</td>\n",
       "      <td>69.105469</td>\n",
       "      <td>20.536458</td>\n",
       "      <td>79.799479</td>\n",
       "      <td>31.992578</td>\n",
       "      <td>0.471876</td>\n",
       "      <td>33.240885</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.369578</td>\n",
       "      <td>31.972618</td>\n",
       "      <td>19.355807</td>\n",
       "      <td>15.952218</td>\n",
       "      <td>115.244002</td>\n",
       "      <td>7.884160</td>\n",
       "      <td>0.331329</td>\n",
       "      <td>11.760232</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27.300000</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>117.000000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>30.500000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.372500</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>140.250000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>127.250000</td>\n",
       "      <td>36.600000</td>\n",
       "      <td>0.626250</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>199.000000</td>\n",
       "      <td>122.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>846.000000</td>\n",
       "      <td>67.100000</td>\n",
       "      <td>2.420000</td>\n",
       "      <td>81.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Pregnancies     Glucose  BloodPressure  SkinThickness     Insulin  \\\n",
       "count   768.000000  768.000000     768.000000     768.000000  768.000000   \n",
       "mean      3.845052  120.894531      69.105469      20.536458   79.799479   \n",
       "std       3.369578   31.972618      19.355807      15.952218  115.244002   \n",
       "min       0.000000    0.000000       0.000000       0.000000    0.000000   \n",
       "25%       1.000000   99.000000      62.000000       0.000000    0.000000   \n",
       "50%       3.000000  117.000000      72.000000      23.000000   30.500000   \n",
       "75%       6.000000  140.250000      80.000000      32.000000  127.250000   \n",
       "max      17.000000  199.000000     122.000000      99.000000  846.000000   \n",
       "\n",
       "              BMI  DiabetesPedigreeFunction         Age     Outcome  \n",
       "count  768.000000                768.000000  768.000000  768.000000  \n",
       "mean    31.992578                  0.471876   33.240885    0.348958  \n",
       "std      7.884160                  0.331329   11.760232    0.476951  \n",
       "min      0.000000                  0.078000   21.000000    0.000000  \n",
       "25%     27.300000                  0.243750   24.000000    0.000000  \n",
       "50%     32.000000                  0.372500   29.000000    0.000000  \n",
       "75%     36.600000                  0.626250   41.000000    1.000000  \n",
       "max     67.100000                  2.420000   81.000000    1.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24efe832320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Outcome 分布，看看各类样本分布是否均衡\n",
    "sns.countplot(train.Outcome);\n",
    "pyplot.xlabel('Outcome');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8805cda0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Pregnancies 分布，看看各类样本分布是否均衡\n",
    "sns.countplot(train.Pregnancies);\n",
    "pyplot.xlabel('Pregnancies');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8a14f710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Age 分布，看看各类样本分布是否均衡\n",
    "sns.countplot(train.Age);\n",
    "pyplot.xlabel('Age');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡。交叉验证对分类任务缺省的是采用StratifiedKFold，在每折采样时根据各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 两两特征相关性\n",
    "\n",
    "#get the names of all the columns\n",
    "cols=train.columns \n",
    "\n",
    "# Calculates pearson co-efficient for all combinations，通常认为相关系数大于0.5的为强相关\n",
    "train_corr = train.corr().abs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9, 9)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_corr.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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BT7AOTnJhzizZZ0ty/redS4r6XIK8Q8BOlmWVeKa9Z2BcTjH380G4nDOWvmwZVnPG2NK4JycZS7wt+v83wKhlmV1Ns570dmAP4FYoAHwDdDYVcdSwHacGbVxOBtwI4GiQFHLsg64Jlf51rIsty8qXLNwLgHGABOBMzizcB2AlyzLuuH0dmnRndKX+Nm88g4S6WbNlgmeDsErtK6UUm/kO8OWs4f+udB/WMvs3j9tf1qbdOTPfy70H9YibwVPh+Bxy05u/+dC/3HHTu/yyGRw13P29XZp/vks68iZXlVnZeI8rxYQ5fr9ArAf58yMo69TfiDO7oQfA3lxZuc6WZa1DMCyLMsY0wb4CJiPszH3J85G3jFXmQhjTEvXMTbjbNC9jHPs2W2zLGuyMeYM8DowAGdmcR8w01XkHM6G0zRXHY67Yu3r2n7S9fsoV/z7gOeS1HGnMaY7MAh4BVjhOs/Um4htuWuGyrdw3qPPhnPilMU4G5siIiIiIl5NmTiRW6BMnDJxokzcnUyZOGXilIlTJg68MBPXr23aZ+Len+VVddbEJiIiIiIiIj5E3SlFRERERMR3Wd43e2RaUyZORERERETEhygTJyIiIiIivivhzpuyQJk4ERERERERH6JMnIiIiIiI+CxLmTgRERERERHxZsrEiYiIiIiI71ImTkRERERERLyZMnEiIiIiIuK7EnSfOBEREREREfFiysSJiIiIiIjvugPHxKkRJyIiIiIivusObMSpO6WIiIiIiIgPUSZORERERER8lmUpEyciIiIiIiJeTJk4ERERERHxXRoTJyIiIiIiIt5MmTgREREREfFdysSJiIiIiIiIN1MmTuQWRF886ekQPOpi/GVPhyBeYE7oGE+H4FFz7x/k6RA85mi8vvvdkaukp0PwqE3nD3s6BI+zG/0feBvrDszEqREnInKTWld6ydMheNyd3oATERHxBmrEiYiIiIiI77oDM3HKB4uIiIiIiPgQZeJERERERMR3JXg6gPSnTJyIiIiIiIgPUSZORERERER81p04O6UycSIiIiIiIj5EmTgREREREfFdysSJiIiIiIiIN1MmTkREREREfJdmpxQRERERERFvpkyciIiIiIj4LM1OKSIiIiIiIl5NmTgREREREfFdd+CYODXiRERERETEZ6k7pYiIiIiIiHg1ZeJERERERMR33YHdKZWJ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ZB3dB3Yjc5bMDP5yIABHIo/y1rNDPBv4bUhwJPDp4DGM+mEENpuNhT8u5sCugzzTtws7w3axJmQtpcrfwzvfDiFrjqxUb1SNZ/o8xTMNumP3t/PJzI8AOH/2PO++PNInxgaD873w1T5vMueXSdjtdiZN+onw8N0MGvwKoaFbWTB/KRMn/MS340azZesKTp6MpctTvW54zOrVq/DEk+35a2s4a9ctAGDIW6NYvHhFOtTo33M4HAzv/wFfTfsEu93GrKnz2LtzPz1f6862sB2sWPwb91cozcffjSR7zmzUbVyTnv2606bOExQrWZR+b7+MZVkYY5gw9gd2h+/1dJXSjTeOWUtr5mb7W4vcKmPMBKCAZVkNk/6eZHsnYLJ1nRy4MeYxnOPmcliWddoYsw7YZFnWi0nKbAFOWJZV99pzupaHAJ0syyqR0rJrXU3gN6CoZVkHblSn/DnuvaP/YZ6/O/lsgXeS8af/u9PX36xPM5TzdAge1fKvO2OK/xtpXrGHp0PwqDjLN8aapZU/TyS/vcedpmg235gwKi39FbPOq1pNfwS1S/PPZw9GzvSqOisTJ17DGDMGWADsBDIB7YC/gTOuIkuBHsaYWcBB4AWc4+g0aldERETkDnUnfsOuMXHiTQzOcXF/AauAu4CHravp4pHAfOBHnJmzU8DPHohTRERERMRjlImTNGNZ1tMp/Z5k3ffA90mWe/7D8c4AnW/2nK7lIcCQ6y271q0m+Vg7EREREfEBd+KYOGXiREREREREfIgycSIiIiIi4rN0nzgRERERERHxasrEiYiIiIiIz/KNuyKmLmXiREREREREfIgycSIiIiIi4rOsO3CScWXiREREREREfIgycSIiIiIi4rMSLE9HkP6UiRMREREREfEhysSJiIiIiIjPStCYOBEREREREfFmysSJiIiIiIjPuhNnp1QjTkREREREfJZu9i0iIiIiIiJeTZk4ERERERHxWXdid0pl4kRERERERHyIMnEiIiIiIuKzNCZOREREREREvJoycSIiIiIi4rPuxEycGnEit+D4hTOeDsGjtuY47ekQPKpl9vs8HYLHHY1XB4473fxNX3g6BI974P7Ong7BY+7JHkx47N+eDsOj6mcu7OkQRNSIExERuVnNK/bwdAgepQac3OkNOPFOmp1SREREREREvJoycSIiIiIi4rMS7rxEnDJx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9x1HnOu6Ejty4/4A7sc9zCdec+CAtfbwFdb5CEjeH/5L3LOsDweuOEOd8bexI5K1GWMmAqWB+Bsn3YT7A/MBMNxaO8oYEwrssdZ296yTB3BYa095no8AOltry3qedwX+Z6295o8a6dWd0l+1DvKP++xklCCH7w+Mz2jVLiW/a0fWMs2krXvbv9Xs9R95OwSfcPcdT3g7BK/ZHnPI2yF4Xc+grHUPttR8EDbVp+7j8mnxzhn+/eyZw1OuWmdjTE3gT+BtYDJwN/Ap0Nda+4mnzN24Z6HsYq1ddYXthJLoe+yVKBMn/qg+7pQ1wHlgP+7bDIxNrbC19q9MiktEREREsiBr7WpjTDtgNDAAdxfK1+IbcB65gPKk3nvsuqgRJ37FWtsV6HqNMg2vsXwE7hswxj+fCEy8schERERExBusj+QFrbWzgdlXWR4KqU3HnKRMw7TsS404ERERERHxW1lx9J9mpxQREREREfEjysSJiIiIiIjfUiZOREREREREfJoycSIiIiIi4rey4v2flIkTERERERHxI8rEiYiIiIiI34rzkVsMZCZl4kRERERERPyIMnEiIiIiIuK3NDuliIiIiIiI+DRl4kRERERExG8pEyciIiIiIiI+TZk4ERERERHxW7pPnIiIiIiIiPg0ZeJERERERMRv6T5xIiIiIiIi4tOUiRMREREREb+l2SlFRERERETEpykTJyIiIiIifkuzU4qIiIiIiIhPUyZO5DoEOJzeDsGr9l087u0QvGre6Qhvh+B1OwqU83YI3pUVf+6VFFZtmeztELwqT/GG3g7Bq9bHHvN2CJJMXBY8OasRJyIiImly9x1PeDsEr8vqDTgRX6SJTURERERERMSnKRMnIiIiIiJ+K+t1plQmTkRERERExK8oEyciIiIiIn5LY+JERERERETEpykTJyIiIiIifivOeDuCzKdMnIiIiIiIiB9RJk5ERERERPxWVrzZtzJxIiIiIiIifkSZOBERERER8VtZLw+nTJyIiIiIiIhfUSZORERERET8lu4TJyIiIiIiIj5NmTgREREREfFbmp1SREREREREfJoycSIiIiIi4reyXh5OmTgRERERERG/okyciIiIiIj4Lc1OKSIiIiIiIj5NmTgREREREfFbmp1SREREREREfFq6NuKMMSOMMXuuc51QY8z/0jMOf2GMscaYzld6Lldn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vkyZOJHrMOiC09sheNVzf2ftU8Zj5zd5OwSvc5qs/dtfqTxB3g7Bq+7Leau3Q/C69bHHvB2C+IApa8d6OwRJJCuOicva38hEREREJM0639XP2yF4nRpwvkfdKUVERERERMSnKRMnIiIiIiJ+Kyt2p1QmTkRERERExI8oEyciIiIiIn5LY+JERERERETEpykTJyIiIiIifktj4kRERERERMSnKRMnIiIiIiJ+S2PiRERERERExKcpEyciIiIiIn5LY+JERERERETEpykTJyIiIiIifsvaOG+HkOmUiRMREREREfEjysSJiIiIiIjfitOYOBEREREREfFlysSJiIiIiIjfsrpPnIiIiIiIiPgyZeJERERERMRvaUyciIiIiIiI+DRl4kRERERExG9lxTFxasSJiIiIiIjfilMjTsTNGFMUGAK0BkKAU8ASYKS1dsN1bKczMNlaazIk0H+JO++tztMjeuBwOljw3Xymf/RjkuVturelyaPNcF1ycfrEacYPeJ/o8GhKVizFs6N6kTNPLuJcLn4c/z1/zFrmpVrcmIKNqlJh5JMYp4PDXy8ibNzPqZYr+kAtqk7oy4pmgzm9cR9BD9alZK/WCcvzVCzBiiaD+GvrgcwK/R+7r0l9Ro95DYfTyZSvfuCDdz9LsjxbtkA++vQdqtxZiZMnYuje9SUOHQwHoGKl8vz3/TfIkyc3cXFxNG34IH//fZGZsydTNKgw58//DUDHdt04duxEptctrRo1rsfIMa/hdDr4etKPjHv38yTLs2ULZPynY6hSzX0Menbrx6GD4TzY8QF6vfh0QrmKd5SnSYMObN28g+m/TKJoUGEunL8AwMPtn/bpYxCvbqPavDqyL06ng2lf/8yEcZOTLL+rdjVeebMvt1Usw8BnhjL/l8UABBcP4r0v/oPT6SAgIIBvJvzA95NmeKMKN+z2e6vSYVhXHE4Hy6cuYsHHM5Msb/R0K+555D5cl1ycOXGab17+hJPhxwBo8+pjVGxUHYC546ax/pflmR7/jbq7YU36vPE8DoeDX76dw9cffpdkedValXnx9ecpfXtpXu81ktDZSwG4s041eo94LqFciTIleL3XSH6f+0emxp8eqt57J12Hd8fhdLDou/nM/Hh6kuWturfhvkeaJlwPPxk4jmPh0QnLc+bOydiF41k1dwVfDvs8+eb93pDRY1n6xyoK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RkREREwcI1sqZ1RNERFVpbBJRERERIdJml/S14FpwF+AK4Fpko6UtEDddBFRQ1biIiIiIrrtm8COlGbfFwICXgkcACwE7FEvWkTUkDNxERERER0m6QFgZ9u/GhjfHjjJ9uJ1kkVELdlOGREREdFt04Gbxhi/GXii5SwR0QGZxEVERER02/eBfSVpZKC5vQ/wg2qpIqKanImLiIiI6BhJ3x11dx7gTcBWki5txjYElgR+0na2iKgvZ+IiIiIiOkbSec/yoba95biGiYjOySQuIiIiIiJiAsmZuIiIiIiIiAkkZ+IiIiIiOk7SZsDOwErAfKOvZTtlRP9kJS4iIiKiwyTtCpwFLANsATwILAu8hNJmICJ6JpO4iIiIiG77BPAR26+n9IzbF1gHOBWYWjNYRNSRSVxEREREt60K/Lq5PR1Y2KUy3RHAntVSRUQ1mcRFREREdNu/gIWa23cDaza3FwYWq5IoIqpKYZOIiIiIbrsYeBVwDfA/wNckvRR4HXBBzWARUUf6xEVERER0mKSVgUVsXy1pQeAwYFPgespZuZyLi+iZTOIiIiIiIiImkJyJi4iIiIiImEByJi4iIiKiYyTdALzC9jRJNwJz3Dple432kkVEF2QSFxEREdE9JwKPjbqd8y8R8bSciYuIiIjoOElLAqtQJnO32L6/cqSIqChn4iIiIiI6StJqks4G7gEuAS4F/iHpDEmr1E0XEbVkJS4iIiKigyQ9j9Ib7t/AMcDVgID1gPcBk4D1bD9QLWREVJFJXEREREQHSdoPeBuwoe2HB64tRlmZO8H2QTXyRUQ92U4ZERER0U3bAocOTuAAbD8IfBXYvvVUEVFdJnERERER3bQmZbVtTv7QPCYieiaTuIiIiIhuWgyYWxXK+4FFW8oSER2SSVxEREREN80DPDWX6wbmbSlLRHRImn1HREREdJOAUyVNn8P1+doMExHdkUlcRERERDf96Fk85tZxTxERnZMWAxERERERERNIzsRFRERERERMIJnERURERERETCCZxEVEREREREwgmcRFRERERERMIJnERURERERETCD/H3Yt/ID1uDAXAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8a2285c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(13, 9))\n",
    "sns.heatmap(train_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features\n",
    "sns.heatmap(train_corr, mask=train_corr < 1, cbar=False)\n",
    "\n",
    "plt.savefig('house_coor.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2 训练数据和测试数据分割"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 从原始数据中分离输入特征x和输出y\n",
    "y = train['Outcome'].values\n",
    "X = train.drop('Outcome', axis = 1)\n",
    "\n",
    "\n",
    "X_train = np.array(train)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(614, 8)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#将数据分割训练数据与测试数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 随机采样20%的数据构建测试集，其余80%作为训练集\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.2)\n",
    "X_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 初始化特征的标准化器\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4 模型训练——Logistic回归"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 default Logistic Regression "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "lr= LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of each fold is:  [0.46129644 0.46510588 0.56426612 0.44377717 0.46617809]\n",
      "cv logloss is: 0.4801247400470109\n"
     ]
    }
   ],
   "source": [
    "# 交叉验证用于评估模型性能和进行参数调优（模型选择）\n",
    "#分类任务中交叉验证缺省是采用StratifiedKFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "loss = cross_val_score(lr, X_train, y_train, cv=5, scoring='neg_log_loss')\n",
    "print('logloss of each fold is: ',-loss)\n",
    "print('cv logloss is:', -loss.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2 正则化 LogisticRegression，利用 GridSearchCV 参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty= LogisticRegression()\n",
    "grid= GridSearchCV(lr_penalty, tuned_parameters,cv=5, scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00099797, 0.00039883, 0.00099716, 0.00059857, 0.00119762,\n",
       "        0.00119648, 0.00099759, 0.00079794, 0.00099716, 0.00059838,\n",
       "        0.00079803, 0.0007977 , 0.00059814, 0.00059853]),\n",
       " 'mean_score_time': array([0.00039883, 0.00079789, 0.00019956, 0.00079732, 0.00079846,\n",
       "        0.00039911, 0.00039897, 0.00059834, 0.00039883, 0.00039878,\n",
       "        0.00059829, 0.00059853, 0.00059838, 0.00059829]),\n",
       " 'mean_test_score': array([-0.69314718, -0.64214833, -0.6721329 , -0.52844007, -0.48658824,\n",
       "        -0.47999943, -0.48043683, -0.48017599, -0.48089736, -0.48086932,\n",
       "        -0.48095239, -0.48095123, -0.48095791, -0.48095956]),\n",
       " 'mean_train_score': array([-0.69314718, -0.6412946 , -0.67079105, -0.52380684, -0.47502516,\n",
       "        -0.46674403, -0.46228809, -0.46214818, -0.46206768, -0.46206619,\n",
       "        -0.46206531, -0.4620653 , -0.46206529, -0.46206529]),\n",
       " 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
       "                    100, 1000, 1000],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'rank_test_score': array([14, 12, 13, 11, 10,  1,  3,  2,  5,  4,  7,  6,  8,  9]),\n",
       " 'split0_test_score': array([-0.69314718, -0.64371675, -0.66946739, -0.52816851, -0.48617792,\n",
       "        -0.4678555 , -0.46345892, -0.46129644, -0.4610852 , -0.46088502,\n",
       "        -0.4608674 , -0.4608487 , -0.46084128, -0.46084513]),\n",
       " 'split0_train_score': array([-0.69314718, -0.64085132, -0.66189542, -0.52529099, -0.47823632,\n",
       "        -0.47085398, -0.46684276, -0.46669378, -0.46662382, -0.46662226,\n",
       "        -0.46662151, -0.46662149, -0.46662149, -0.46662148]),\n",
       " 'split1_test_score': array([-0.69314718, -0.64113725, -0.67517494, -0.52518603, -0.47166609,\n",
       "        -0.47077815, -0.46426531, -0.46510588, -0.46463035, -0.46473286,\n",
       "        -0.46468953, -0.46469927, -0.464697  , -0.46469595]),\n",
       " 'split1_train_score': array([-0.69314718, -0.64188719, -0.67797602, -0.52532854, -0.47970427,\n",
       "        -0.47076994, -0.46692689, -0.46678157, -0.46671609, -0.4667146 ,\n",
       "        -0.4667139 , -0.46671388, -0.46671388, -0.46671388]),\n",
       " 'split2_test_score': array([-0.69314718, -0.64575466, -0.6680453 , -0.5512625 , -0.54752906,\n",
       "        -0.54301469, -0.56469834, -0.56426612, -0.56847322, -0.56834734,\n",
       "        -0.56880144, -0.56879096, -0.56883315, -0.5688357 ]),\n",
       " 'split2_train_score': array([-0.69314718, -0.63908575, -0.66162164, -0.5135644 , -0.45564342,\n",
       "        -0.44783203, -0.44194626, -0.44184498, -0.44173181, -0.44173047,\n",
       "        -0.44172922, -0.4417292 , -0.44172919, -0.44172919]),\n",
       " 'split3_test_score': array([-0.69314718, -0.63856226, -0.67581323, -0.50975335, -0.4550322 ,\n",
       "        -0.44706595, -0.44365812, -0.44377717, -0.4439747 , -0.44400066,\n",
       "        -0.44402916, -0.4440332 , -0.44403411, -0.44403656]),\n",
       " 'split3_train_score': array([-0.69314718, -0.64333601, -0.67874616, -0.5309552 , -0.48382515,\n",
       "        -0.47509784, -0.47066695, -0.47052445, -0.47044459, -0.47044314,\n",
       "        -0.47044228, -0.47044226, -0.47044225, -0.47044225]),\n",
       " 'split4_test_score': array([-0.69314718, -0.64152376, -0.67221592, -0.52767402, -0.47216546,\n",
       "        -0.47104103, -0.46582364, -0.46617809, -0.46606361, -0.46612355,\n",
       "        -0.4661169 , -0.4661268 , -0.46612681, -0.46612722]),\n",
       " 'split4_train_score': array([-0.69314718, -0.64131272, -0.67371601, -0.52389506, -0.47771665,\n",
       "        -0.46916638, -0.46505758, -0.46489609, -0.4648221 , -0.46482048,\n",
       "        -0.46481965, -0.46481964, -0.46481963, -0.46481963]),\n",
       " 'std_fit_time': array([1.87367274e-06, 4.88460855e-04, 2.43140197e-07, 4.88733468e-04,\n",
       "        3.99328057e-04, 3.98707600e-04, 3.81469727e-07, 3.98969921e-04,\n",
       "        6.32595976e-07, 4.88577796e-04, 3.99017362e-04, 3.98850965e-04,\n",
       "        4.88383182e-04, 4.88694596e-04]),\n",
       " 'std_score_time': array([0.00048846, 0.00039895, 0.00039911, 0.00039866, 0.00039923,\n",
       "        0.00048881, 0.00048864, 0.00048854, 0.00048846, 0.0004884 ,\n",
       "        0.0004885 , 0.00048869, 0.00048858, 0.0004885 ]),\n",
       " 'std_test_score': array([0.        , 0.00243715, 0.00305426, 0.0132657 , 0.0320593 ,\n",
       "        0.03276814, 0.0429432 , 0.04285084, 0.04453411, 0.04448689,\n",
       "        0.04466629, 0.04466183, 0.04467914, 0.04467945]),\n",
       " 'std_train_score': array([0.        , 0.00138524, 0.00757197, 0.00566626, 0.00992513,\n",
       "        0.00965834, 0.01033372, 0.01031565, 0.01033125, 0.01033118,\n",
       "        0.01033136, 0.01033136, 0.01033136, 0.01033136])}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4799994349368312\n",
      "{'C': 0.1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 可以得到最佳的C值为0.1，而正则函数penalty为L2正则。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Users\\hplxg\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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xOjRozGZTCxcuLDYY40bN46pU6fSqFEjJk2axPDhwzl69GhuMqsM8q1TG6RfgAPrMO35EpdjmzFoMyd0KGvNQ9ji1pumbaMY0C6M0U3r4e5idHS0QpTozBtvkLn/QLn2zThg3S+nF15ZuLduRei//12u8xbl448/Ztu2bcyePdsux7vzzjt57LHH8q2bNGlS7ufIyEgmT57MqFGjSkxKkydP5sYbbwRg6tSpNG7cmF27dtGnTx+7xFoYSUo1VUYKHFxPxu4vcD26EaPO5owOYp15EL969aVJu2u4qV0oYyIDMBrK2K37wXWVE7MQtczq1at55JFHWLx4MV26dLHLMaOjo69a99lnnzF37lz++usvLl26hNlsJiMjg/Pnzxc7222nTp1yP4eHhwNw9uxZu8RZFElKNUlmKhyK5fJvX+B+9AdctIkkXY915pvY43c9jdv34ub2Ydamj2EAAAuhSURBVDxWv448XySqtYrUVpzlOaXly5czcuRIFi1axIgRI+x2XG9v73zLmzdv5t5772XSpEm89dZb+Pv78+OPPzJq1ChMJlOxx8rbSSLnO8Nisdgt1sJIUqruTGnowxtI2fk5Xse+w9WSSar253NzPw7U609Ex77c1K4+o6T7thBOY9GiRYz9//buPsiquo7j+PsjLg8GGyJsggiLgVRWmi6UMrIojiGaWWpWloOTmllqiE+Zk5lmUpNIRanhA1FJ2eRoTz6Oq4RiUjZlIoMpPqwiaCTqLorstz/OXedy3ae7e/eec2+f18yOs7977u9+f3c958vvnN8539NPZ8mSJR0ubiil5cuXM3bsWC666KK32goXW2SJk1Il2rqFbY/fxX//8iuGPXUnA9taeSNqubVtOv+uO5TxH5rJoe8fw4nDh6QdqZkVWLBgAeeccw6LFi2isbGR9evXA8mspKtTab01efJkmpubWbp0KdOmTaOpqYnFixeX/HNKxUmpUrz5BlvX3s1LDy5j+NN3MrjtNRRDuTn25+nRs6jf91Bm7zWGXYYOSjtSM+vCwoUL2bZtG6eeeup2CxIaGxtpamoq+ecdffTRzJs3j7POOouWlhZmzpzJ/PnzOeGE4hd6lIPalwxazzQ0NMSqVavK82HbtrJlbRMbV97IiKfv4B1tr/By7MTdTOW5sYdR33AYje8dw7DBNeWJxywFq1evLtlyacjONaVq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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8a207e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i] ,label = penaltys[i] +' Test')\n",
    "    pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i] ,label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'neg-logloss' )\n",
    "pyplot.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 由上图可以看出，给出了L1正则和L2正则下、不同正则参数C对应的模型在训练集上测试集上的正确率（score），且在训练集上C越大（正则越少）的模型性能越好。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3 用LogisticRegressionCV实现正则化的 Logistic Regression,并参数调优 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.3.1 L1正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l1',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "\n",
    "Cs = [ 1,10,100,1000]\n",
    "\n",
    "lrcv_L1 = LogisticRegressionCV(Cs = Cs, cv = 5, scoring='neg_log_loss',penalty='l1', solver='liblinear', multi_class='ovr')\n",
    "lrcv_L1.fit(X_train, y_train)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[-0.46346307, -0.46108795, -0.46087026, -0.46084661],\n",
       "        [-0.46426229, -0.46463405, -0.46468636, -0.46469648],\n",
       "        [-0.56469451, -0.56847878, -0.56879916, -0.56881744],\n",
       "        [-0.44365892, -0.44397764, -0.4440281 , -0.44403745],\n",
       "        [-0.46582664, -0.46606761, -0.4661241 , -0.46612029]])}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L1.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "0",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-23-10a26bfbf5a4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_classes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m         \u001b[0mscores\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlrcv_L1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscores_\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mmse_mean\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscores\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 0"
     ]
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 1\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "\n",
    "for j in range(n_classes):\n",
    "        scores[j][:] = np.mean(lrcv_L1.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "pyplot.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('neg-logloss')\n",
    "pyplot.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4.3.2 L2正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='lbfgs', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "\n",
    "Cs = [1, 10,100,1000]\n",
    "\n",
    "# 大量样本（6W+）、高维度（93），L2正则 --> 缺省用lbfgs\n",
    "# LogisticRegressionCV比GridSearchCV快\n",
    "lrcv_L2 = LogisticRegressionCV(Cs=Cs, cv = 5, scoring='neg_log_loss', penalty='l2', multi_class='ovr')\n",
    "lrcv_L2.fit(X_train, y_train)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: array([[-0.46123038, -0.46087948, -0.46084641, -0.46084415],\n",
       "        [-0.46514768, -0.46473614, -0.46469976, -0.4646939 ],\n",
       "        [-0.56460344, -0.56838869, -0.56879651, -0.56883748],\n",
       "        [-0.44409945, -0.44403687, -0.44403607, -0.44403635],\n",
       "        [-0.46583797, -0.4660921 , -0.46612206, -0.4661243 ]])}"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L2.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "0",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-26-fb4987b45ddd>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_classes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m         \u001b[0mscores\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlrcv_L2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscores_\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mmse_mean\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscores\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 0"
     ]
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 1\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "\n",
    "for j in range(n_classes):\n",
    "        scores[j][:] = np.mean(lrcv_L2.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "pyplot.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('neg-logloss')\n",
    "pyplot.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5 模型训练——SVM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1 default SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "SVC1 = LinearSVC().fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.75      0.90      0.82        99\n",
      "          1       0.71      0.45      0.56        55\n",
      "\n",
      "avg / total       0.74      0.74      0.72       154\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[89 10]\n",
      " [30 25]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn import metrics \n",
    "#在校验集上测试，估计模型性能\n",
    "y_predict = SVC1.predict(X_test)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC1, metrics.classification_report(y_test, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % metrics.confusion_matrix(y_test, y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2 线性SVM正则参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C, X_train, y_train, X_test, y_test):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_test, y_test)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7597402597402597\n",
      "accuracy: 0.6688311688311688\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8a7c50b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train, y_train, X_test, y_test)\n",
    "    accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "pyplot.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6 模型训练——RBF核的SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_test, y_test):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_test, y_test)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.7402597402597403\n",
      "accuracy: 0.7077922077922078\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7532467532467533\n",
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.7467532467532467\n",
      "accuracy: 0.6623376623376623\n",
      "accuracy: 0.6883116883116883\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-2, 2, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, 2, 5)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6493506493506493\n",
      "accuracy: 0.7337662337662337\n",
      "accuracy: 0.6428571428571429\n",
      "accuracy: 0.6493506493506493\n",
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.7532467532467533\n",
      "accuracy: 0.6493506493506493\n",
      "accuracy: 0.7272727272727273\n",
      "accuracy: 0.7597402597402597\n",
      "accuracy: 0.7467532467532467\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-1, 2, 4)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-5, -2, 4)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x24e8a7e45c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
